package com.erp.erp_entitys.Contract_Info;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.hibernate.validator.constraints.NotEmpty;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author 
 * 外销合同主信息表
 */
public class ContractInfo implements Serializable {
    /**
     * 主键ID
     */
    private Long id;

    /**
     * 父节点
     */
    @NotEmpty
    private Integer parentid;

    /**
     * 部门ID
     */
    @NotEmpty
    private Integer organizedid;

    /**
     * 客户ID
     */
    @NotEmpty
    private Integer custid;

    /**
     * 客户名称
     */
    private String customername;

    /**
     * 联系人
     */
    @NotEmpty
    private String contact;

    /**
     * 联系人邮箱
     */
    @NotEmpty
    private String contactmailbox;

    /**
     * 合同编号
     */
    @NotEmpty
    private String contractno;

    /**
     * 客户合同号
     */
    @NotEmpty
    private String customercontractno;

    /**
     * 合同签订时间
     */
    @NotEmpty
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date sdate;

    /**
     * 签约公司ID
     */
    @NotEmpty
    private String companyid;

    /**
     * 签约公司名称
     */
    private String signingcompany;

    /**
     * 签约公司对应的银行id
     */
    @NotEmpty
    private Integer bankid;

    /**
     * 签约公司对应的银行名称
     */
    private String bank;

    /**
     * 起运地
     */
    @NotEmpty
    private String place;

    /**
     * 目的地
     */
    @NotEmpty
    private String destination;

    /**
     * 币种id
     */
    @NotEmpty
    private Integer moneykindid;

    /**
     * 币种
     */
    private String currency;

    /**
     * 人民币兑美元汇率
     */
    @NotEmpty
    private BigDecimal exchangerate;

    /**
     * 美元兑人民币汇率
     */
    private BigDecimal dollar;

    /**
     * 备货期限
     */
    @NotEmpty
    private String stockupperiod;

    /**
     * 出运日期
     */
    @NotEmpty
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date shdate;

    /**
     * 贸易方式
     */
    private String tradeway;

    /**
     * 运输方式
     */
    private String modetransportation;

    /**
     * 价格术语ID
     */
    @NotEmpty
    private Integer pricetermid;

    /**
     * 价格术语
     */
    private String priceterms;

    /**
     * 付款期限
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date paymentterm;

    /**
     * 业务员姓名
     */
    @NotEmpty
    private String salesman;

    /**
     * 业务模式
     */
    private String businessmodel;

    /**
     * 充值占用
     */
    private String topupoccupy;

    /**
     * 0 不报关， 1 报关
     */
    private String declaration;

    /**
     * 货柜型号
     */
    @NotEmpty
    private Integer containertype;

    /**
     * 付款方式
     */
    @NotEmpty
    private String termspayment;

    /**
     * 账期
     */
    @NotEmpty
    private String paymentdays;

    /**
     * 客诉单号
     */
    private String customercomplaintnumber;

    /**
     * 操作员姓名
     */
    @NotEmpty
    private String theoperator;

    /**
     * 预收款比例
     */
    private BigDecimal percentageadvancepayment;

    /**
     * 预收款总额
     */
    private BigDecimal amountreceivedadvance;

    /**
     * 合同总金额
     */
    private BigDecimal totalamountcontract;

    /**
     * 备注
     */
    @NotEmpty
    private String note;

    /**
     * 当前客户所属业务员
     */
    @NotEmpty
    private String curropname;

    /**
     * 转移业务员姓名
     */
    @NotEmpty
    private String transopname;

    /**
     * 编辑时间
     */
    @NotEmpty
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date edittime;

    /**
     * 合同创建时间
     */
    @NotEmpty
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createtime;

    /**
     * 合同状态(1.草稿箱 2.待批箱 3.已批箱 4.完成箱 5.垃圾箱)
     */
    @NotEmpty
    private String status;

    /**
     * 实际收款金额
     */
    private BigDecimal payinmoney;

    /**
     * 报价单ID
     */
    @NotEmpty
    private Integer quotedid;

    /**
     * 分批出运
     */
    @NotEmpty
    private String batchmode;
    /**
     * 单据信息
     */
    private String documentsinformation;
    /**
     * 产品费用
     */
    private List<ContractProductCostInfo> costs;
    /**
     *外销合同商品信息表信息
     */
    private List<ContractProductInfo> productInfos;
    /**
     * 产品附件
     */
    private List<ContractProductAnnexInfo> annexs;
    /**
     * 产品规格配件
     */
    private List<ContractProductPartsInfo> partsInfos;

    private static final long serialVersionUID = 1L;

    public List<ContractProductCostInfo> getCosts() {
        return costs;
    }

    public void setCosts(List<ContractProductCostInfo> costs) {
        this.costs = costs;
    }

    public List<ContractProductInfo> getProductInfos() {
        return productInfos;
    }

    public void setProductInfos(List<ContractProductInfo> productInfos) {
        this.productInfos = productInfos;
    }

    public List<ContractProductAnnexInfo> getAnnexs() {
        return annexs;
    }

    public void setAnnexs(List<ContractProductAnnexInfo> annexs) {
        this.annexs = annexs;
    }

    public List<ContractProductPartsInfo> getPartsInfos() {
        return partsInfos;
    }

    public void setPartsInfos(List<ContractProductPartsInfo> partsInfos) {
        this.partsInfos = partsInfos;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Integer getParentid() {
        return parentid;
    }

    public void setParentid(Integer parentid) {
        this.parentid = parentid;
    }

    public Integer getOrganizedid() {
        return organizedid;
    }

    public void setOrganizedid(Integer organizedid) {
        this.organizedid = organizedid;
    }

    public Integer getCustid() {
        return custid;
    }

    public void setCustid(Integer custid) {
        this.custid = custid;
    }

    public String getCustomername() {
        return customername;
    }

    public void setCustomername(String customername) {
        this.customername = customername;
    }

    public String getContact() {
        return contact;
    }

    public void setContact(String contact) {
        this.contact = contact;
    }

    public String getContactmailbox() {
        return contactmailbox;
    }

    public void setContactmailbox(String contactmailbox) {
        this.contactmailbox = contactmailbox;
    }

    public String getContractno() {
        return contractno;
    }

    public void setContractno(String contractno) {
        this.contractno = contractno;
    }

    public String getCustomercontractno() {
        return customercontractno;
    }

    public void setCustomercontractno(String customercontractno) {
        this.customercontractno = customercontractno;
    }

    public Date getSdate() {
        return sdate;
    }

    public void setSdate(Date sdate) {
        this.sdate = sdate;
    }

    public String getCompanyid() {
        return companyid;
    }

    public void setCompanyid(String companyid) {
        this.companyid = companyid;
    }

    public String getSigningcompany() {
        return signingcompany;
    }

    public void setSigningcompany(String signingcompany) {
        this.signingcompany = signingcompany;
    }

    public Integer getBankid() {
        return bankid;
    }

    public void setBankid(Integer bankid) {
        this.bankid = bankid;
    }

    public String getBank() {
        return bank;
    }

    public void setBank(String bank) {
        this.bank = bank;
    }

    public String getPlace() {
        return place;
    }

    public void setPlace(String place) {
        this.place = place;
    }

    public String getDestination() {
        return destination;
    }

    public void setDestination(String destination) {
        this.destination = destination;
    }

    public Integer getMoneykindid() {
        return moneykindid;
    }

    public void setMoneykindid(Integer moneykindid) {
        this.moneykindid = moneykindid;
    }

    public String getCurrency() {
        return currency;
    }

    public void setCurrency(String currency) {
        this.currency = currency;
    }

    public BigDecimal getExchangerate() {
        return exchangerate;
    }

    public void setExchangerate(BigDecimal exchangerate) {
        this.exchangerate = exchangerate;
    }

    public BigDecimal getDollar() {
        return dollar;
    }

    public void setDollar(BigDecimal dollar) {
        this.dollar = dollar;
    }

    public String getStockupperiod() {
        return stockupperiod;
    }

    public void setStockupperiod(String stockupperiod) {
        this.stockupperiod = stockupperiod;
    }

    public Date getShdate() {
        return shdate;
    }

    public void setShdate(Date shdate) {
        this.shdate = shdate;
    }

    public String getTradeway() {
        return tradeway;
    }

    public void setTradeway(String tradeway) {
        this.tradeway = tradeway;
    }

    public String getModetransportation() {
        return modetransportation;
    }

    public void setModetransportation(String modetransportation) {
        this.modetransportation = modetransportation;
    }

    public Integer getPricetermid() {
        return pricetermid;
    }

    public void setPricetermid(Integer pricetermid) {
        this.pricetermid = pricetermid;
    }

    public String getPriceterms() {
        return priceterms;
    }

    public void setPriceterms(String priceterms) {
        this.priceterms = priceterms;
    }

    public Date getPaymentterm() {
        return paymentterm;
    }

    public void setPaymentterm(Date paymentterm) {
        this.paymentterm = paymentterm;
    }

    public String getSalesman() {
        return salesman;
    }

    public void setSalesman(String salesman) {
        this.salesman = salesman;
    }

    public String getBusinessmodel() {
        return businessmodel;
    }

    public void setBusinessmodel(String businessmodel) {
        this.businessmodel = businessmodel;
    }

    public String getTopupoccupy() {
        return topupoccupy;
    }

    public void setTopupoccupy(String topupoccupy) {
        this.topupoccupy = topupoccupy;
    }

    public String getDeclaration() {
        return declaration;
    }

    public void setDeclaration(String declaration) {
        this.declaration = declaration;
    }

    public Integer getContainertype() {
        return containertype;
    }

    public void setContainertype(Integer containertype) {
        this.containertype = containertype;
    }

    public String getTermspayment() {
        return termspayment;
    }

    public void setTermspayment(String termspayment) {
        this.termspayment = termspayment;
    }

    public String getPaymentdays() {
        return paymentdays;
    }

    public void setPaymentdays(String paymentdays) {
        this.paymentdays = paymentdays;
    }

    public String getCustomercomplaintnumber() {
        return customercomplaintnumber;
    }

    public void setCustomercomplaintnumber(String customercomplaintnumber) {
        this.customercomplaintnumber = customercomplaintnumber;
    }

    public String getTheoperator() {
        return theoperator;
    }

    public void setTheoperator(String theoperator) {
        this.theoperator = theoperator;
    }

    public BigDecimal getPercentageadvancepayment() {
        return percentageadvancepayment;
    }

    public void setPercentageadvancepayment(BigDecimal percentageadvancepayment) {
        this.percentageadvancepayment = percentageadvancepayment;
    }

    public BigDecimal getAmountreceivedadvance() {
        return amountreceivedadvance;
    }

    public void setAmountreceivedadvance(BigDecimal amountreceivedadvance) {
        this.amountreceivedadvance = amountreceivedadvance;
    }

    public BigDecimal getTotalamountcontract() {
        return totalamountcontract;
    }

    public void setTotalamountcontract(BigDecimal totalamountcontract) {
        this.totalamountcontract = totalamountcontract;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public String getCurropname() {
        return curropname;
    }

    public void setCurropname(String curropname) {
        this.curropname = curropname;
    }

    public String getTransopname() {
        return transopname;
    }

    public void setTransopname(String transopname) {
        this.transopname = transopname;
    }

    public Date getEdittime() {
        return edittime;
    }

    public void setEdittime(Date edittime) {
        this.edittime = edittime;
    }

    public Date getCreatetime() {
        return createtime;
    }

    public void setCreatetime(Date createtime) {
        this.createtime = createtime;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public BigDecimal getPayinmoney() {
        return payinmoney;
    }

    public void setPayinmoney(BigDecimal payinmoney) {
        this.payinmoney = payinmoney;
    }

    public Integer getQuotedid() {
        return quotedid;
    }

    public void setQuotedid(Integer quotedid) {
        this.quotedid = quotedid;
    }

    public String getBatchmode() {
        return batchmode;
    }

    public void setBatchmode(String batchmode) {
        this.batchmode = batchmode;
    }

    public String getDocumentsinformation() {
        return documentsinformation;
    }

    public void setDocumentsinformation(String documentsinformation) {
        this.documentsinformation = documentsinformation;
    }
}